package com.study.springsecurity.constant;

/**
 * 常量类
 * @Author YL
 * @Create 2024/4/3 15:14
 * @Version 1.0
 */
public class CommonConstant {
    public static class PageUrl{
        /** 登录页面 */
        public static final String LOGIN_PAGE = "/static/login.html";

        /** 登录接口 */
        public static final String LOGIN_URL = "/login/userLogin";

        /** 登出接口 */
        public static final String LOGIN_OUT_URL = "/login/loginOut";

        /** h2相关接口匹配器 */
        public static final String H2_URL_MATCHER = "/h2/**";

        /** 匿名接口匹配器 */
        public static final String ANONYMOUS_URL_MATCHER = "/anonymous/**";

        /** 用户相关信息接口匹配器 */
        public static final String USERINFO_URL_MATCHER = "/userInfo/**";

        /** 平台管理接口匹配器 */
        public static final String PLAT_MANAGE_URL_MATCHER = "/manage/**";

        /** 不需要登录也可访问的接口列表 */
        public static final String[] NO_NEED_PERMIT_ARR = {"/login/getVerifyCode"};

        /** 仅需要登录即可访问的接口列表 */
        public static final String[] ONLY_NEED_AUTH_ARR = {"/business/getCurrentLoginUserName"};
    }

    public static class Role{
        /** 角色前缀 */
        public static final String ROLE_PREFIX = "ROLE_";

        /** H2角色 */
        public static final String H2_ROLE = "R_H2";

        /** 管理员角色 */
        public static final String ADMIN_ROLE = "R_ADMIN";

        /** 平台用户管理角色 */
        public static final String PLAT_USER_ROLE = "R_PLAT_USER";

        /** 平台角色管理用户角色 */
        public static final String PLAT_ROLE_ROLE = "R_PLAT_ROLE";
    }

    /**
     * 认证类型（permitAll-所有人可访问、anonymous-匿名用户访问、authenticated-登录用户即可访问、hasAnyRole-指定角色可访问）
     */
    public static class AuthType{
        /** 所有人可访问 */
        public static final String PERMIT_ALL = "permitAll";

        /** 匿名用户访问 */
        public static final String ANONYMOUS = "anonymous";

        /** 登录用户即可访问 */
        public static final String AUTHENTICATED = "authenticated";

        /** 指定角色可访问 */
        public static final String HAS_ANY_ROLE = "hasAnyRole";

    }
}
